<!DOCTYPE HTML>

<html lang="en">
<head>

<title>LdapUserDetailsManager (spring-security-docs 5.6.3 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="LdapUserDetailsManager (spring-security-docs 5.6.3 API)";
        }
    }
    catch(err) {
    }
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">

<div class="topNav"><a id="navbar.top">

</a>
<div class="skipNav"><a href="LdapUserDetailsManager.html#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">

</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="LdapUserDetailsManager.html#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="LdapUserDetailsManager.html#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="LdapUserDetailsManager.html#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="LdapUserDetailsManager.html#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">

</a></div>

</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>

<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.springframework.security.ldap.userdetails</a></div>
<h2 title="Class LdapUserDetailsManager" class="title">Class LdapUserDetailsManager</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.springframework.security.ldap.userdetails.LdapUserDetailsManager</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="../../core/userdetails/UserDetailsService.html" title="interface in org.springframework.security.core.userdetails">UserDetailsService</a></code>, <code><a href="../../provisioning/UserDetailsManager.html" title="interface in org.springframework.security.provisioning">UserDetailsManager</a></code></dd>
</dl>
<hr>
<pre>public class <span class="typeNameLabel">LdapUserDetailsManager</span>
extends java.lang.Object
implements <a href="../../provisioning/UserDetailsManager.html" title="interface in org.springframework.security.provisioning">UserDetailsManager</a></pre>
<div class="block">An Ldap implementation of UserDetailsManager.
<p>
It is designed around a standard setup where users and groups/roles are stored under
separate contexts, defined by the "userDnBase" and "groupSearchBase" properties
respectively.
<p>
In this case, LDAP is being used purely to retrieve information and this class can be
used in place of any other UserDetailsService for authentication. Authentication isn't
performed directly against the directory, unlike with the LDAP authentication provider
setup.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.0</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">

</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="LdapUserDetailsManager.html#%3Cinit%3E(org.springframework.ldap.core.ContextSource)">LdapUserDetailsManager</a></span>&#8203;(org.springframework.ldap.core.ContextSource&nbsp;contextSource)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">

</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="LdapUserDetailsManager.html#addAuthorities(org.springframework.ldap.core.DistinguishedName,java.util.Collection)">addAuthorities</a></span>&#8203;(org.springframework.ldap.core.DistinguishedName&nbsp;userDn,
java.util.Collection&lt;? extends <a href="../../core/GrantedAuthority.html" title="interface in org.springframework.security.core">GrantedAuthority</a>&gt;&nbsp;authorities)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected org.springframework.ldap.core.DistinguishedName</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="LdapUserDetailsManager.html#buildGroupDn(java.lang.String)">buildGroupDn</a></span>&#8203;(java.lang.String&nbsp;group)</code></th>
<td class="colLast">
<div class="block">Creates a DN from a group name.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="LdapUserDetailsManager.html#changePassword(java.lang.String,java.lang.String)">changePassword</a></span>&#8203;(java.lang.String&nbsp;oldPassword,
java.lang.String&nbsp;newPassword)</code></th>
<td class="colLast">
<div class="block">Changes the password for the current user.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="LdapUserDetailsManager.html#copyToContext(org.springframework.security.core.userdetails.UserDetails,org.springframework.ldap.core.DirContextAdapter)">copyToContext</a></span>&#8203;(<a href="../../core/userdetails/UserDetails.html" title="interface in org.springframework.security.core.userdetails">UserDetails</a>&nbsp;user,
org.springframework.ldap.core.DirContextAdapter&nbsp;ctx)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="LdapUserDetailsManager.html#createUser(org.springframework.security.core.userdetails.UserDetails)">createUser</a></span>&#8203;(<a href="../../core/userdetails/UserDetails.html" title="interface in org.springframework.security.core.userdetails">UserDetails</a>&nbsp;user)</code></th>
<td class="colLast">
<div class="block">Create a new user with the supplied details.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="LdapUserDetailsManager.html#deleteUser(java.lang.String)">deleteUser</a></span>&#8203;(java.lang.String&nbsp;username)</code></th>
<td class="colLast">
<div class="block">Remove the user with the given login name from the system.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../core/userdetails/UserDetails.html" title="interface in org.springframework.security.core.userdetails">UserDetails</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="LdapUserDetailsManager.html#loadUserByUsername(java.lang.String)">loadUserByUsername</a></span>&#8203;(java.lang.String&nbsp;username)</code></th>
<td class="colLast">
<div class="block">Locates the user based on the username.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="LdapUserDetailsManager.html#removeAuthorities(org.springframework.ldap.core.DistinguishedName,java.util.Collection)">removeAuthorities</a></span>&#8203;(org.springframework.ldap.core.DistinguishedName&nbsp;userDn,
java.util.Collection&lt;? extends <a href="../../core/GrantedAuthority.html" title="interface in org.springframework.security.core">GrantedAuthority</a>&gt;&nbsp;authorities)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="LdapUserDetailsManager.html#setAttributesToRetrieve(java.lang.String%5B%5D)">setAttributesToRetrieve</a></span>&#8203;(java.lang.String[]&nbsp;attributesToRetrieve)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="LdapUserDetailsManager.html#setGroupMemberAttributeName(java.lang.String)">setGroupMemberAttributeName</a></span>&#8203;(java.lang.String&nbsp;groupMemberAttributeName)</code></th>
<td class="colLast">
<div class="block">Sets the name of the multi-valued attribute which holds the DNs of users who are
members of a group.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="LdapUserDetailsManager.html#setGroupRoleAttributeName(java.lang.String)">setGroupRoleAttributeName</a></span>&#8203;(java.lang.String&nbsp;groupRoleAttributeName)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="LdapUserDetailsManager.html#setGroupSearchBase(java.lang.String)">setGroupSearchBase</a></span>&#8203;(java.lang.String&nbsp;groupSearchBase)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="LdapUserDetailsManager.html#setPasswordAttributeName(java.lang.String)">setPasswordAttributeName</a></span>&#8203;(java.lang.String&nbsp;passwordAttributeName)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="LdapUserDetailsManager.html#setRoleMapper(org.springframework.ldap.core.AttributesMapper)">setRoleMapper</a></span>&#8203;(org.springframework.ldap.core.AttributesMapper&nbsp;roleMapper)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="LdapUserDetailsManager.html#setUsePasswordModifyExtensionOperation(boolean)">setUsePasswordModifyExtensionOperation</a></span>&#8203;(boolean&nbsp;usePasswordModifyExtensionOperation)</code></th>
<td class="colLast">
<div class="block">Sets the method by which a user's password gets modified.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="LdapUserDetailsManager.html#setUserDetailsMapper(org.springframework.security.ldap.userdetails.UserDetailsContextMapper)">setUserDetailsMapper</a></span>&#8203;(<a href="UserDetailsContextMapper.html" title="interface in org.springframework.security.ldap.userdetails">UserDetailsContextMapper</a>&nbsp;userDetailsMapper)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="LdapUserDetailsManager.html#setUsernameMapper(org.springframework.security.ldap.LdapUsernameToDnMapper)">setUsernameMapper</a></span>&#8203;(<a href="../LdapUsernameToDnMapper.html" title="interface in org.springframework.security.ldap">LdapUsernameToDnMapper</a>&nbsp;usernameMapper)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="LdapUserDetailsManager.html#updateUser(org.springframework.security.core.userdetails.UserDetails)">updateUser</a></span>&#8203;(<a href="../../core/userdetails/UserDetails.html" title="interface in org.springframework.security.core.userdetails">UserDetails</a>&nbsp;user)</code></th>
<td class="colLast">
<div class="block">Update the specified user.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="LdapUserDetailsManager.html#userExists(java.lang.String)">userExists</a></span>&#8203;(java.lang.String&nbsp;username)</code></th>
<td class="colLast">
<div class="block">Check if a user with the supplied login name exists in the system.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">

</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">

</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(org.springframework.ldap.core.ContextSource)">

</a>
<ul class="blockListLast">
<li class="blockList">
<h4>LdapUserDetailsManager</h4>
<pre>public&nbsp;LdapUserDetailsManager&#8203;(org.springframework.ldap.core.ContextSource&nbsp;contextSource)</pre>
</li>
</ul>
</li>
</ul>
</section>

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">

</a>
<h3>Method Detail</h3>
<a id="loadUserByUsername(java.lang.String)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>loadUserByUsername</h4>
<pre class="methodSignature">public&nbsp;<a href="../../core/userdetails/UserDetails.html" title="interface in org.springframework.security.core.userdetails">UserDetails</a>&nbsp;loadUserByUsername&#8203;(java.lang.String&nbsp;username)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../core/userdetails/UserDetailsService.html#loadUserByUsername(java.lang.String)">UserDetailsService</a></code></span></div>
<div class="block">Locates the user based on the username. In the actual implementation, the search
may possibly be case sensitive, or case insensitive depending on how the
implementation instance is configured. In this case, the <code>UserDetails</code>
object that comes back may have a username that is of a different case than what
was actually requested..</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../core/userdetails/UserDetailsService.html#loadUserByUsername(java.lang.String)">loadUserByUsername</a></code>&nbsp;in interface&nbsp;<code><a href="../../core/userdetails/UserDetailsService.html" title="interface in org.springframework.security.core.userdetails">UserDetailsService</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>username</code> - the username identifying the user whose data is required.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a fully populated user record (never <code>null</code>)</dd>
</dl>
</li>
</ul>
<a id="changePassword(java.lang.String,java.lang.String)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>changePassword</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;changePassword&#8203;(java.lang.String&nbsp;oldPassword,
                           java.lang.String&nbsp;newPassword)</pre>
<div class="block">Changes the password for the current user. The username is obtained from the
security context.
There are two supported strategies for modifying the user's password depending on
the capabilities of the corresponding LDAP server.
<p>
Configured one way, this method will modify the user's password via the
<a target="_blank" href="https://tools.ietf.org/html/rfc3062"> LDAP Password Modify
Extended Operation </a>.
See <a href="LdapUserDetailsManager.html#setUsePasswordModifyExtensionOperation(boolean)"><code>setUsePasswordModifyExtensionOperation(boolean)</code></a>
for details.
</p>
<p>
By default, though, if the old password is supplied, the update will be made by
rebinding as the user, thus modifying the password using the user's permissions. If
<code>oldPassword</code> is null, the update will be attempted using a standard
read/write context supplied by the context source.
</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../provisioning/UserDetailsManager.html#changePassword(java.lang.String,java.lang.String)">changePassword</a></code>&nbsp;in interface&nbsp;<code><a href="../../provisioning/UserDetailsManager.html" title="interface in org.springframework.security.provisioning">UserDetailsManager</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>oldPassword</code> - the old password</dd>
<dd><code>newPassword</code> - the new value of the password.</dd>
</dl>
</li>
</ul>
<a id="createUser(org.springframework.security.core.userdetails.UserDetails)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>createUser</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;createUser&#8203;(<a href="../../core/userdetails/UserDetails.html" title="interface in org.springframework.security.core.userdetails">UserDetails</a>&nbsp;user)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../provisioning/UserDetailsManager.html#createUser(org.springframework.security.core.userdetails.UserDetails)">UserDetailsManager</a></code></span></div>
<div class="block">Create a new user with the supplied details.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../provisioning/UserDetailsManager.html#createUser(org.springframework.security.core.userdetails.UserDetails)">createUser</a></code>&nbsp;in interface&nbsp;<code><a href="../../provisioning/UserDetailsManager.html" title="interface in org.springframework.security.provisioning">UserDetailsManager</a></code></dd>
</dl>
</li>
</ul>
<a id="updateUser(org.springframework.security.core.userdetails.UserDetails)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>updateUser</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;updateUser&#8203;(<a href="../../core/userdetails/UserDetails.html" title="interface in org.springframework.security.core.userdetails">UserDetails</a>&nbsp;user)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../provisioning/UserDetailsManager.html#updateUser(org.springframework.security.core.userdetails.UserDetails)">UserDetailsManager</a></code></span></div>
<div class="block">Update the specified user.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../provisioning/UserDetailsManager.html#updateUser(org.springframework.security.core.userdetails.UserDetails)">updateUser</a></code>&nbsp;in interface&nbsp;<code><a href="../../provisioning/UserDetailsManager.html" title="interface in org.springframework.security.provisioning">UserDetailsManager</a></code></dd>
</dl>
</li>
</ul>
<a id="deleteUser(java.lang.String)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>deleteUser</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;deleteUser&#8203;(java.lang.String&nbsp;username)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../provisioning/UserDetailsManager.html#deleteUser(java.lang.String)">UserDetailsManager</a></code></span></div>
<div class="block">Remove the user with the given login name from the system.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../provisioning/UserDetailsManager.html#deleteUser(java.lang.String)">deleteUser</a></code>&nbsp;in interface&nbsp;<code><a href="../../provisioning/UserDetailsManager.html" title="interface in org.springframework.security.provisioning">UserDetailsManager</a></code></dd>
</dl>
</li>
</ul>
<a id="userExists(java.lang.String)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>userExists</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;userExists&#8203;(java.lang.String&nbsp;username)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../provisioning/UserDetailsManager.html#userExists(java.lang.String)">UserDetailsManager</a></code></span></div>
<div class="block">Check if a user with the supplied login name exists in the system.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../provisioning/UserDetailsManager.html#userExists(java.lang.String)">userExists</a></code>&nbsp;in interface&nbsp;<code><a href="../../provisioning/UserDetailsManager.html" title="interface in org.springframework.security.provisioning">UserDetailsManager</a></code></dd>
</dl>
</li>
</ul>
<a id="buildGroupDn(java.lang.String)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>buildGroupDn</h4>
<pre class="methodSignature">protected&nbsp;org.springframework.ldap.core.DistinguishedName&nbsp;buildGroupDn&#8203;(java.lang.String&nbsp;group)</pre>
<div class="block">Creates a DN from a group name.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>group</code> - the name of the group</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the DN of the corresponding group, including the groupSearchBase</dd>
</dl>
</li>
</ul>
<a id="copyToContext(org.springframework.security.core.userdetails.UserDetails,org.springframework.ldap.core.DirContextAdapter)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>copyToContext</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;copyToContext&#8203;(<a href="../../core/userdetails/UserDetails.html" title="interface in org.springframework.security.core.userdetails">UserDetails</a>&nbsp;user,
                             org.springframework.ldap.core.DirContextAdapter&nbsp;ctx)</pre>
</li>
</ul>
<a id="addAuthorities(org.springframework.ldap.core.DistinguishedName,java.util.Collection)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>addAuthorities</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;addAuthorities&#8203;(org.springframework.ldap.core.DistinguishedName&nbsp;userDn,
                              java.util.Collection&lt;? extends <a href="../../core/GrantedAuthority.html" title="interface in org.springframework.security.core">GrantedAuthority</a>&gt;&nbsp;authorities)</pre>
</li>
</ul>
<a id="removeAuthorities(org.springframework.ldap.core.DistinguishedName,java.util.Collection)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>removeAuthorities</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;removeAuthorities&#8203;(org.springframework.ldap.core.DistinguishedName&nbsp;userDn,
                                 java.util.Collection&lt;? extends <a href="../../core/GrantedAuthority.html" title="interface in org.springframework.security.core">GrantedAuthority</a>&gt;&nbsp;authorities)</pre>
</li>
</ul>
<a id="setUsernameMapper(org.springframework.security.ldap.LdapUsernameToDnMapper)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>setUsernameMapper</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setUsernameMapper&#8203;(<a href="../LdapUsernameToDnMapper.html" title="interface in org.springframework.security.ldap">LdapUsernameToDnMapper</a>&nbsp;usernameMapper)</pre>
</li>
</ul>
<a id="setPasswordAttributeName(java.lang.String)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>setPasswordAttributeName</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setPasswordAttributeName&#8203;(java.lang.String&nbsp;passwordAttributeName)</pre>
</li>
</ul>
<a id="setGroupSearchBase(java.lang.String)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>setGroupSearchBase</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setGroupSearchBase&#8203;(java.lang.String&nbsp;groupSearchBase)</pre>
</li>
</ul>
<a id="setGroupRoleAttributeName(java.lang.String)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>setGroupRoleAttributeName</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setGroupRoleAttributeName&#8203;(java.lang.String&nbsp;groupRoleAttributeName)</pre>
</li>
</ul>
<a id="setAttributesToRetrieve(java.lang.String[])">

</a>
<ul class="blockList">
<li class="blockList">
<h4>setAttributesToRetrieve</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setAttributesToRetrieve&#8203;(java.lang.String[]&nbsp;attributesToRetrieve)</pre>
</li>
</ul>
<a id="setUserDetailsMapper(org.springframework.security.ldap.userdetails.UserDetailsContextMapper)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>setUserDetailsMapper</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setUserDetailsMapper&#8203;(<a href="UserDetailsContextMapper.html" title="interface in org.springframework.security.ldap.userdetails">UserDetailsContextMapper</a>&nbsp;userDetailsMapper)</pre>
</li>
</ul>
<a id="setGroupMemberAttributeName(java.lang.String)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>setGroupMemberAttributeName</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setGroupMemberAttributeName&#8203;(java.lang.String&nbsp;groupMemberAttributeName)</pre>
<div class="block">Sets the name of the multi-valued attribute which holds the DNs of users who are
members of a group.
<p>
Usually this will be <tt>uniquemember</tt> (the default value) or <tt>member</tt>.
</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>groupMemberAttributeName</code> - the name of the attribute used to store group
members.</dd>
</dl>
</li>
</ul>
<a id="setRoleMapper(org.springframework.ldap.core.AttributesMapper)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>setRoleMapper</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setRoleMapper&#8203;(org.springframework.ldap.core.AttributesMapper&nbsp;roleMapper)</pre>
</li>
</ul>
<a id="setUsePasswordModifyExtensionOperation(boolean)">

</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setUsePasswordModifyExtensionOperation</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setUsePasswordModifyExtensionOperation&#8203;(boolean&nbsp;usePasswordModifyExtensionOperation)</pre>
<div class="block">Sets the method by which a user's password gets modified.
If set to <code>true</code>, then <a href="LdapUserDetailsManager.html#changePassword(java.lang.String,java.lang.String)"><code>changePassword(java.lang.String, java.lang.String)</code></a> will
modify the user's password by way of the
<a target="_blank" href="https://tools.ietf.org/html/rfc3062">Password Modify
Extension Operation</a>.
If set to <code>false</code>, then <a href="LdapUserDetailsManager.html#changePassword(java.lang.String,java.lang.String)"><code>changePassword(java.lang.String, java.lang.String)</code></a> will
modify the user's password by directly modifying attributes on the corresponding
entry.
Before using this setting, ensure that the corresponding LDAP server supports this
extended operation.
By default, <code>usePasswordModifyExtensionOperation</code> is false.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>usePasswordModifyExtensionOperation</code> - </dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>4.2.9</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>

<footer role="contentinfo">
<nav role="navigation">

<div class="bottomNav"><a id="navbar.bottom">

</a>
<div class="skipNav"><a href="LdapUserDetailsManager.html#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">

</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="LdapUserDetailsManager.html#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="LdapUserDetailsManager.html#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="LdapUserDetailsManager.html#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="LdapUserDetailsManager.html#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">

</a></div>

</nav>
</footer>
<script>if (window.parent == window) {(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-2728886-23', 'auto', {'siteSpeedSampleRate': 100});ga('send', 'pageview');}</script><script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194" integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw==" data-cf-beacon='{"rayId":"7040e2d99c1a97cf","token":"bffcb8a918ae4755926f76178bfbd26b","version":"2021.12.0","si":100}' crossorigin="anonymous"></script>
</body>
</html>
